package homework.day02;

import java.util.Scanner;

/**
 * 程序需求:
 * 程序启动后，实例化一个Person，然后要求用户输入用户名
 * 和年龄.并加以验证:
 * 名字至少一个字符，否则输出:姓名不能为空!
 * 年龄必须是0-100之间的数字，否则输出:年龄不合法!
 * 
 * 都输入正确时最后输出该用户信息
 * 
 * 将下面写好的代码解除注释改正里面的错误使得程序可以正常
 * 运行。
 * 异常记一记:
 * 下面会出现的每一种异常先翻译异常的名字，然后解决该异常后
 * 思考是什么原因引起的错误并在注释中标注出来
 *
 * @author Xiloer
 *
 */
public class Test05 {
	public static void main(String[] args) {
		Person p = new Person();
		//1 Scanner要导包
		//2 后面实例化时Scanner类名拼写错误
		//3 System的S要大写
//		Scanner scanner = new Scnner(system.in);
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入姓名:");
		String name = scanner.nextLine();
		/*
			空指针产生的原因:当我们调用某个对象的属性或方法时，该对象若为null则会引发空指针异常
			p.getName().length()引发空指针，可能的原因是:
			若:p.getName()出现了空指针，则说明p是null
			若:p.getName().length()出现了空指针，则说明p.getName()返回值为null

			分析:
			p是否为null? p不是null，原因是main方法第一句话就实例化了一个Person赋值给p变量
			因此，可以断定,是p.getName()返回值为null

			逻辑要求是判断用户输入的名字长度不能为0!
		 */
//		if(p.getName().length()==0) {
		if(name.length()==0) {
			System.out.println("姓名不能为空!");
		}else{
			p.setName(name);
		}
		System.out.println("请输入年龄:");
		int age = scanner.nextInt();
		//应当判断的是用户输入的年龄!
//		if(p.getAge()<0&&p.getAge()>100) {
		if(age<0||age>100) {
			System.out.println("年龄不合法!");
		}else{
			//age为Person的私有属性，不能在类的外部直接访问，要使用get,set方法操作
//			p.age = age;
			p.setAge(age);
		}
		//同理，应当用get,set方法
//		System.out.println("姓名:"+p.name);
//		System.out.println("年龄:"+p.age);
		System.out.println("姓名:"+p.getName());
		System.out.println("年龄:"+p.getAge());
	}

	
}
class Person{
	private String name;
	private int age;
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}